var common = {};

common.getRndInteger =function getRndInteger(min, max) {
    return Math.floor(Math.random() * (max - min + 1) ) + min;
}

function getDate(){
    // 获取当前日期数据，以列表形式返回
    var dateList = []
    var date = new Date()
    dateList.push(date.getFullYear().toString())
    dateList.push(date.getMonth().toString())
    dateList.push(date.getDate().toString())
    return dateList
}

common.checkSignTime = function checkSignTime(type, time, delay){
    // 签到打卡
    var currentDate = getDate();
    var signDateTime = currentDate.concat(time.replace(/\s*/g,"").split(":"));
    // 打卡时间对应的时间戳
    var signDateTimeStamp = new Date(
        signDateTime[0],
        signDateTime[1],
        signDateTime[2],
        signDateTime[3],
        signDateTime[4],
        signDateTime[5]
        ).valueOf();
    // 当前时间戳
    var currentDateTimeStamp = new Date().valueOf();
    var timeIsOk = false
    if (type == "on") {
        // 假如上班打卡任务执行时间是08:30:00 即（signDateTimeStamp: 08:30:00）写死的时间
        // 程序运行至此:（currentDateTimeStamp：08:31:00）真实变化的时间
        // 本次delay随机到20分钟（15-30）
        // 所以只能按照打卡时间往后延迟，比如设定打卡时间08:00:00，实际打卡实际可能会在 08:15 - 08:30 之间，随机时间不让超过45分钟
        // 所以根据实际去设置上班打卡任务实际，真实打卡实际会在此基础上延后15-30分钟
        if (60 * 45 * 1000 > currentDateTimeStamp - signDateTimeStamp && currentDateTimeStamp - signDateTimeStamp >= delay * 60 * 1000) {
            timeIsOk = true
        }
    } else {
        // 下班delay随机（20-45）
        // 下班不做最大打卡延迟，确保多晚都可以打到卡
        timeIsOk = currentDateTimeStamp - signDateTimeStamp >= delay * 60 * 1000
    }
    return timeIsOk
}

var weekMap = {
    1: "一",
    2: "二",
    3: "三",
    4: "四",
    5: "五",
    6: "六",
    7: "日"
}

common.checkWeek = function checkWeek(week){
    var weekList = week.replace(/\s*/g,"").split(",");
    var date = new Date();
    var currentWeek = weekMap[date.getDay()];
    if (weekList.indexOf(currentWeek) >= 0) {
        return true
    }
    return false
}

common.readFile = function readFile(path){
    var data = files.read(path);
    if (data) {
        return JSON.parse(data);
    }
    return {}
    
}

common.updateFile = function updateFile(path, data){
    files.write(path, JSON.stringify(data),"utf-8")
    return true
}

common.writeFile = function writeFile(path, data){
    files.write(path, JSON.stringify(data),"utf-8")
    return true
}

function unLock(pwd) {
    if (pwd) {
        swipe(500,1700,600,1200,210);
        var password = pwd
        for(var i = 0; i < password.length; i++){
            var p = text(password[i].toString()).findOne().bounds();
            click(p.centerX(), p.centerY());
            sleep(100);
        }
    }
}

/*
情况一：有锁屏
    黑屏：锁屏
        1.唤醒屏幕
        2.滑动，出现输入密码界面
        3.输入解锁密码
    亮屏：有消息通知等使得屏幕亮起
        1.滑动，出现输入密码界面
        2.输入解锁密码
情况二：无锁屏
    黑屏：
        1.唤醒屏幕
        2.滑动进入桌面
    亮屏：有消息通知等使得屏幕亮起
        1.滑动进入桌面
*/

common.unlock = function unlock(pwd){  // 屏幕解锁
    var on = device.isScreenOn();
    // 1.是否亮屏
    if(!on){
        console.log("当前为息屏状态");
        device.wakeUp();  // 2.唤醒屏幕
        swipe(500,1700,600,1200,210);  // 3.滑动，判断有无密码（依据：密码界面的紧急呼叫文字）
        sleep(700);
        if (text("紧急呼叫").exists()) {
            // 有密码
            unLock(pwd);
            console.log("息屏情况下手机解锁成功");
        } else {
            // 无密码
            console.log("手机未锁屏");
        }
    } else {
        console.log("当前为亮屏状态");
        swipe(500,1700,600,1200,210);
        sleep(700);
        if (text("紧急呼叫").exists()) {
            // 说明处于锁屏，解锁
            unLock(pwd);
            console.log("亮屏情况下手机解锁成功");
        } else {
            // 未锁屏
            console.log("手机未锁屏");
        }
    }
}

module.exports = common;
